package paidaxing.blog.core.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import paidaxing.blog.core.entity.SearchRecords;
import java.util.Date;
import java.util.List;

@Mapper
public interface SearchRecordsMapper {
    /**
     * 根据ID查询搜索记录
     *
     * @param id 记录ID
     * @return 搜索记录实体
     */
    SearchRecords queryById(Long id);

    /**
     * 根据关键词查询搜索记录
     *
     * @param keyword 关键词
     * @return 搜索记录实体
     */
    SearchRecords queryByKeyword(String keyword);

    /**
     * 查询热门搜索关键词
     *
     * @param limit 限制数量
     * @return 搜索记录列表
     */
    List<SearchRecords> queryHotSearches(@Param("limit") int limit);

    /**
     * 根据日期范围查询搜索记录
     *
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 搜索记录列表
     */
    List<SearchRecords> queryByDateRange(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 插入搜索记录
     *
     * @param searchRecords 搜索记录实体
     * @return 影响行数
     */
    int insert(SearchRecords searchRecords);

    /**
     * 更新搜索记录
     *
     * @param searchRecords 搜索记录实体
     * @return 影响行数
     */
    int update(SearchRecords searchRecords);

    /**
     * 根据ID删除搜索记录
     *
     * @param id 记录ID
     * @return 影响行数
     */
    int deleteById(Long id);

    /**
     * 增加搜索次数
     *
     * @param keyword 关键词
     * @return 影响行数
     */
    int incrementSearchCount(@Param("keyword") String keyword);
}